home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / programm.ing / progem.lzh / apndx6.prf < prev    next >
Encoding:
Text File  |  1987-06-23  |  5.1 KB  |  181 lines

  1. .!****************************************************************************
  2. .! 
  3. .! ANTIC PUBLISHING INC., COPYRIGHT 1985.  REPRINTED BY PERMISSION.
  4. .!
  5. .! ** Professional GEM ** by Tim Oren
  6. .!
  7. .! Proff File by ST enthusiasts at
  8. .! Case Western Reserve University
  9. .! Cleveland, Ohio
  10. .! uucp : decvax!cwruecmp!bammi
  11. .! csnet: bammi@case
  12. .! arpa : bammi%case@csnet-relay
  13. .! compuserve: 71515,155
  14. .!
  15. .!****************************************************************************
  16. .!
  17. .!            Begin Appendix 6
  18. .!
  19. .!***************************************************************************
  20. .!
  21. .!
  22. .AP VI Sample Code for Part VII 
  23. /*
  24. >>>>>>>>>>>>>>>>>>>>>> Download file for GEM column #7 <<<<<<<<<<<<<<<<<<<<<
  25. >>>>>>>>>>>>>>>>>>>>>>>>>>>> Sample Menu Tree <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  26. */
  27.  
  28. -1, 1, 6, G_IBOX, NONE, NORMAL, 0x0L, 0,0, 80,25,    /* ROOT */
  29. 6, 2, 2, G_BOX, NONE, NORMAL, 0x1100L, 0,0, 80,513,    /* THE BAR */
  30. 1, 3, 5, G_IBOX, NONE, NORMAL, 0x0L, 2,0, 20,769,    /* THE ACTIVE */
  31. 4, -1, -1, G_TITLE, NONE, NORMAL, 0x0L, 0,0, 6,769,    /* Title #1 */
  32. 5, -1, -1, G_TITLE, NONE, NORMAL, 0x1L, 6,0, 6,769,    /* Title #2 */
  33. 2, -1, -1, G_TITLE, NONE, NORMAL, 0x2L, 12,0, 8,769,    /* Title #3 */
  34. 0, 7, 22, G_IBOX, NONE, NORMAL, 0x0L, 0,769, 80,19,    /* THE SCREEN */
  35. 16, 8, 15, G_BOX, NONE, NORMAL, 0xFF1100L, 2,0, 20,8,    /* Drop-down #1 */
  36. 9, -1, -1, G_STRING, NONE, NORMAL, 0x3L, 0,0, 19,1,    /* About... entry */
  37. 10, -1, -1, G_STRING, NONE, DISABLED, 0x4L, 0,1, 20,1,
  38. 11, -1, -1, G_STRING, NONE, NORMAL, 0x5L, 0,2, 20,1,    /* Desk acc entries */
  39. 12, -1, -1, G_STRING, NONE, NORMAL, 0x6L, 0,3, 20,1,
  40. 13, -1, -1, G_STRING, NONE, NORMAL, 0x7L, 0,4, 20,1,
  41. 14, -1, -1, G_STRING, NONE, NORMAL, 0x8L, 0,5, 20,1,
  42. 15, -1, -1, G_STRING, NONE, NORMAL, 0x9L, 0,6, 20,1,
  43. 7, -1, -1, G_STRING, NONE, NORMAL, 0xAL, 0,7, 20,1,
  44. 22, 17, 21, G_BOX, NONE, NORMAL, 0xFF1100L, 8,0, 13,5,    /* Drop-down #2 */
  45. 18, -1, -1, G_STRING, NONE, NORMAL, 0xBL, 0,0, 13,1,
  46. 19, -1, -1, G_STRING, NONE, DISABLED, 0xCL, 0,1, 13,1,
  47. 20, -1, -1, G_STRING, NONE, NORMAL, 0xDL, 0,4, 13,1,
  48. 21, -1, -1, G_STRING, NONE, NORMAL, 0xEL, 0,2, 13,1,
  49. 16, -1, -1, G_STRING, NONE, DISABLED, 0xFL, 0,3, 13,1,
  50. 6, 23, 25, G_BOX, NONE, NORMAL, 0xFF1100L, 14,0, 26,3,    /* Drop down #3 */
  51. 24, -1, -1, G_STRING, NONE, NORMAL, 0x10L, 0,2, 26,1,
  52. 25, -1, -1, G_STRING, NONE, NORMAL, 0x11L, 0,0, 26,1,
  53. 22, -1, -1, G_STRING, LASTOB, DISABLED, 0x12L, 0,1, 26,1
  54. .bp
  55. /*
  56. >>>>>>>>>>>>>>>>>>>>>>>> Menu enable/disable utility <<<<<<<<<<<<<<<<<<<<<<
  57. */
  58.  
  59. /*------------------------------*/
  60. /*    undo_obj        */
  61. /*------------------------------*/
  62.     VOID
  63. undo_obj(tree, which, bit)
  64.     LONG    tree;
  65.     WORD    which;
  66.     UWORD    bit;
  67.     {
  68.     WORD    state;
  69.  
  70.     state = LWGET(OB_STATE(which));
  71.     LWSET(OB_STATE(which), state & ~bit);
  72.     }
  73.  
  74. /*------------------------------*/
  75. /*    enab_obj        */
  76. /*------------------------------*/
  77.     WORD
  78. enab_obj(tree, which)
  79.     LONG    tree;
  80.     WORD    which;
  81.     {
  82.     undo_obj(tree, which, (UWORD) DISABLED);
  83.     return (TRUE);
  84.     }
  85.  
  86. /*------------------------------*/
  87. /*    do_obj          */
  88. /*------------------------------*/
  89.     VOID
  90. do_obj(tree, which, bit)
  91.     LONG    tree;
  92.     WORD    which;
  93.     UWORD    bit;
  94.     {
  95.     WORD    state;
  96.  
  97.     state = LWGET(OB_STATE(which));
  98.     LWSET(OB_STATE(which), state | bit);
  99.     }
  100.  
  101. /*------------------------------*/
  102. /*    disab_obj        */
  103. /*------------------------------*/
  104.     WORD
  105. disab_obj(tree, which)
  106.     LONG    tree;
  107.     WORD    which;
  108.     {
  109.     do_obj(tree, which, (UWORD) DISABLED);
  110.     return (TRUE);
  111.     }
  112.  
  113. /*------------------------------*/
  114. /*    set_menu        */
  115. /*------------------------------*/
  116.     VOID
  117. set_menu(tree, change)            /* change[0] TRUE selects all entries*/
  118.     LONG    tree;            /* FALSE deselects all.  Change list */
  119.     WORD    *change;        /* of items is then toggled.         */
  120.     {
  121.     WORD    dflt, screen, drop, obj;
  122.  
  123.     dflt = *change++;            /* What is default?   */
  124.     screen = LWGET(OB_TAIL(ROOT));        /* Get SCREEN           */
  125.     drop = LWGET(OB_HEAD(screen));        /* Get DESK drop-down */
  126.                         /* and skip it        */
  127.     for (; (drop = LWGET(OB_NEXT(drop))) != screen; )
  128.         {
  129.         obj = LWGET(OB_HEAD(drop));
  130.         if (obj != NIL)
  131.         if (dflt)
  132.             map_tree(tree, obj, drop, enab_obj);
  133.         else
  134.             map_tree(tree, obj, drop, disab_obj);
  135.         }
  136.  
  137.     for (; *change; change++)
  138.         if (dflt)
  139.             disab_obj(tree, *change);
  140.         else
  141.             enab_obj(tree, *change);
  142.     }
  143. .bp
  144. /*
  145. >>>>>>>>>>>>>>>>>>>>> Definitions used in this article <<<<<<<<<<<<<<<<<<<<<<
  146. */
  147.  
  148. #define ROOT 0
  149.  
  150. #define G_IBOX    25
  151. #define G_STRING  28
  152. #define G_TITLE   32
  153.  
  154. #define R_TREE     0
  155.  
  156. #define MN_SELECTED 10
  157.  
  158. #define CHECKED   0x4
  159. #define DISABLED  0x8
  160.  
  161. #define OB_NEXT(x) (tree + (x) * sizeof(OBJECT) + 0)
  162. #define OB_HEAD(x) (tree + (x) * sizeof(OBJECT) + 2)
  163. #define OB_TAIL(x) (tree + (x) * sizeof(OBJECT) + 4)
  164. #define OB_TYPE(x) (tree + (x) * sizeof(OBJECT) + 6)
  165. #define OB_FLAGS(x) (tree + (x) * sizeof(OBJECT) + 8)
  166. #define OB_STATE(x) (tree + (x) * sizeof(OBJECT) + 10)
  167. #define OB_SPEC(x) (tree + (x) * sizeof(OBJECT) + 12)
  168. #define OB_X(x) (tree + (x) * sizeof(OBJECT) + 16)
  169. #define OB_Y(x) (tree + (x) * sizeof(OBJECT) + 18)
  170. #define OB_WIDTH(x) (tree + (x) * sizeof(OBJECT) + 20)
  171. #define OB_HEIGHT(x) (tree + (x) * sizeof(OBJECT) + 22)
  172.  
  173. #define M_OFF     256
  174. #define M_ON      257
  175. .!
  176. .!****************************************************************************
  177. .!
  178. .!            End Appendix 6
  179. .!
  180. .!****************************************************************************
  181.